package examples.usingguice;

import static org.junit.Assert.*;
import org.junit.Test;

import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;

/**
 * {@code Guice}が単体でまともに動くかどうか確認する為のテスト。
 * 
 * @author imai78
 *
 */
public class GuiceSample {

	/**
	 * {@link Module}の実装クラスを使った{@code Injection}のテスト。
	 */
	@Test
	public void test1() {
		Injector injector = Guice.createInjector(new CalcModule());
		Calc calc = injector.getInstance(Calc.class);
		assertEquals(3, calc.calc(1, 2));
	}

	/**
	 * {@link AbstractModule}の実装クラスを使った{@code Injection}のテスト。
	 */
	@Test
	public void test2() {
		Injector injector = Guice.createInjector(new CalcModuleImpl());
		Calc calc = injector.getInstance(Calc.class);
		assertEquals(3, calc.calc(1, 2));
	}

}
